package com.ddwl.common.constant;

import lombok.AllArgsConstructor;
import lombok.Getter;

/**
 * @author wenbin
 * @version 1.0.0.RELEASE
 * @date 2020/7/31
 * @Description 每加一条模板添加一个模板id,加一个dto字段与微信字段的对应
 */
public interface WxEnum {

    //微信消息模板
    /**    参数类别	参数说明	参数值限制	说明
    thing.DATA	事物	20个以内字符	可汉字、数字、字母或符号组合
    number.DATA	数字	32位以内数字	只能数字，可带小数
    letter.DATA	字母	32位以内字母	只能字母
    symbol.DATA	符号	5位以内符号	只能符号
    character_string.DATA	字符串	32位以内数字、字母或符号	可数字、字母或符号组合
    time.DATA	时间	24小时制时间格式（支持+年月日），支持填时间段，两个时间点之间用“~”符号连接	例如：15:01，或：2019年10月1日 15:01
    date.DATA	日期	年月日格式（支持+24小时制时间），支持填时间段，两个时间点之间用“~”符号连接	例如：2019年10月1日，或：2019年10月1日 15:01
    amount.DATA	金额	1个币种符号+10位以内纯数字，可带小数，结尾可带“元”	可带小数
    phone_number.DATA	电话	17位以内，数字、符号	电话号码，例：+86-0766-66888866
    car_number.DATA	车牌	8位以内，第一位与最后一位可为汉字，其余为字母或数字	车牌号码：粤A8Z888挂
    name.DATA	姓名	10个以内纯汉字或20个以内纯字母或符号	中文名10个汉字内；纯英文名20个字母内；中文和字母混合按中文名算，10个字内
    phrase.DATA	汉字	5个以内汉字	5个以内纯汉字，例如：配送中
     */
    @AllArgsConstructor
    @Getter
    enum WxMsgTemplate {
        TEMPLATEID1( "855","消息模板1:订单发货", "kEe0Ax6_BjEVZLNKH5vnKQYgbCIgopgYTt2x_ENVmDM"),
        TEMPLATEID2( "2001","消息模板2:提现成功", "vjX-HMcm6dtf_vFNrFky6xGVFdP92XS3JjDTu-QMBKY"),
        TEMPLATEID3( "818","消息模板3:审核结果通知", "XLUB09P74CYr_EUW2MoHzS-hYdKrQqFys-UTROrKjvs"),
        ;
        private String code;
        private String name;
        private String id;

        // 根据code获取名称
        public static String getNameByCode(String code) {
            for (WxMsgTemplate t : WxMsgTemplate.values()) {
                if (t.getCode().equals(code))
                    return t.getName();
            }
            return code;
        }
        // 根据code获取id
        public static String getIdByCode(String code) {
            for (WxMsgTemplate t : WxMsgTemplate.values()) {
                if (t.getCode().equals(code))
                    return t.getId();
            }
            return code;
        }

        // 根据name获取code
        public static String getCodeByName(String name) {
            for (WxMsgTemplate t : WxMsgTemplate.values()) {
                if (t.getCode().equals(name))
                    return t.getCode();
            }
            return name;
        }
        // 根据name获取id
        public static String getIdByName(String name) {
            for (WxMsgTemplate t : WxMsgTemplate.values()) {
                if (t.getCode().equals(name))
                    return t.getId();
            }
            return name;
        }

        /**
         * 根据code判断 是否是枚举中的一员
         * @param code
         * @return
         */
        public static boolean isIncludeCode(String code) {
            WxMsgTemplate t = getCode(code);
            if(null==t) return false;
            return true;
        }

        public static WxMsgTemplate getCode(String code) {
            for (WxMsgTemplate t : WxMsgTemplate.values()) {
                if (t.getCode().equals(code))
                    return t;
            }
            return null;
        }
        /**
         * 根据name判断 是否是枚举中的一员
         * @param name
         * @return
         */
        public static boolean isIncludeName(String name) {
            WxMsgTemplate t = getName(name);
            if(null==t) return false;
            return true;
        }

        public static WxMsgTemplate getName(String name) {
            for (WxMsgTemplate t : WxMsgTemplate.values()) {
                if (t.getName().equals(name))
                    return t;
            }
            return null;
        }

    }

    //微信消息模板映射1:订单发货
    @AllArgsConstructor
    @Getter
    enum TEMPLATEINVOKE1 {
        ORDERID( "orderId", "订单id","character_string1"),
        //ITEMNAME( "itemName", "商品名称","thing2"),
        LOGISTICSNAME( "logisticsName", "快递类型","phrase3"),
        LOGISTICSNO( "logisticsNo", "快递单号","character_string4"),
        ;
        private String code;
        private String name;
        private String value;

        // 根据code获取名称
        public static String getValueByCode(String code) {
            for (TEMPLATEINVOKE1 t : TEMPLATEINVOKE1.values()) {
                if (t.getCode().equals(code))
                    return t.getValue();
            }
            return code;
        }
    }

    //微信消息模板映射2:收益到账
    @AllArgsConstructor
    @Getter
    enum TEMPLATEINVOKE2 {
        TOTALAMOUNT( "totalAmount", "提现金额","amount1"),
        FEEAMOUNT( "feeAmount", "手续费","amount2"),
        WITHDRAWTIME( "withdrawTime", "发放时间","time5"),
        ;
        private String code;
        private String name;
        private String value;

        // 根据code获取名称
        public static String getValueByCode(String code) {
            for (TEMPLATEINVOKE1 t : TEMPLATEINVOKE1.values()) {
                if (t.getCode().equals(code))
                    return t.getValue();
            }
            return code;
        }
    }

    //微信消息模板映射3:审核结果通知
    @AllArgsConstructor
    @Getter
    enum TEMPLATEINVOKE3 {
        IDNAME( "idName", "审核对象","thing1"),
        APPLYRESULT( "applyResult", "审核结果","phrase2"),
        APPLYTIME( "applyTime", "审核时间","time3"),
        APPLYSUB( "applySub", "审核说明","thing4"),
        ;
        private String code;
        private String name;
        private String value;

        // 根据code获取名称
        public static String getValueByCode(String code) {
            for (TEMPLATEINVOKE1 t : TEMPLATEINVOKE1.values()) {
                if (t.getCode().equals(code))
                    return t.getValue();
            }
            return code;
        }
    }




}
